#ifndef ___fuse_release
#define ___fuse_release 1

#ifndef FUSE_USE_VERSION
#define FUSE_USE_VERSION 28
#endif

#include <stdio.h>
#include <stdlib.h>
#include "mtlib.c"
#include <fuse.h>
#include <fcntl.h>
#include <errno.h>
#include "logging.c"

//Prototipo
int fuse_release(const char *, struct fuse_file_info *);

//CERRAR UN ARCHIVO
int fuse_release(const char * path, struct fuse_file_info * ptr) { //se va a llamar cada vez que se abre un archivo

    uint64_t descriptor;
    int resultado;
    unsigned int centro_release = 0;
    unsigned int descriptorConexion;

        descriptor = ptr -> fh;

        while (!centro_release)
            centro_release = mtf_obtener_descriptor(1024);

        descriptorConexion = mtf_conectar(centro_release, MTP_INTERNO, centro_fat);

        if (descriptorConexion == 0) {
            mtf_liberar_descriptor(centro_release);
            return -EAGAIN;
        }

        resultado = mtf_enviar_mensaje(centro_release, descriptorConexion, MTQ_CERRAR_ARCHIVO, (long long) descriptor);

        if (resultado == 0) {
            mtf_desconectar(centro_release, descriptorConexion);
            mtf_liberar_descriptor(centro_release);
            return -EAGAIN;

        } else {
            ptr -> flush = 1;
            log_registrar(descArch, "FUSE", LOG_INFO, "Archivo cerrado %lld \n", descriptor);
            mtf_desconectar(centro_release, descriptorConexion);
            mtf_liberar_descriptor(centro_release);
            return EXIT_SUCCESS;
            }
}

#endif

